package com.dys.ai.service;

import com.dys.ai.common.api.ResponseEntity;
import com.dys.ai.common.dto.BookingDetailsDTO;

import java.time.LocalTime;

/**
 * 购票、改签、退票相关服务
 */
public interface TicketService {

    /**
     * 1.购票
     *
     * @param realName         真实姓名
     * @param departureStation 出发站
     * @param arrivalStation   终点站
     * @param departureDate    出发日期
     * @param trainNumber      列车编号
     * @param seatTypeName     座位类型名称
     * @return 购票成功 or 失败的描述
     */
    ResponseEntity butTicketByUserInput(String realName,
                                        String departureStation,
                                        String arrivalStation,
                                        LocalTime departureDate,
                                        String trainNumber,
                                        String seatTypeName);

    /**
     * 2.改签
     *
     * @param originalOrderId 原始订单编号
     * @param newTrainId      改签后的车次号
     * @param newSeatNumber   列车编号
     * @return 改签成功 or 失败的描述
     */
    ResponseEntity changeOrder(Long originalOrderId, Long newTrainId, Integer newCarriageNumber, String newSeatNumber);

    /**
     * 3.退票
     *
     * @param orderId 订单编号
     * @return 退票成功 or 失败的描述
     */
    ResponseEntity refundOrder(Long orderId);

    /**
     * 列出所有订单信息
     * @return 订单列表
     */
    ResponseEntity listOrderInfo();

    /**
     * 获取订单信息
     */
    BookingDetailsDTO getBookingDetailsByRealNameAndTrainNumber(String realName, String trainNumber);
}
